package itsm.isperp.module.repository.project;

import itsm.isperp.framework.data.domain.DataRequest;
import itsm.isperp.framework.data.domain.DataResponse;
import itsm.isperp.framework.data.mybatis.dao.CUDMapper;
import itsm.isperp.framework.web.request.JqGridRequest;
import itsm.isperp.module.dto.project.ProjectMonitorDTO;
import itsm.isperp.module.entity.configuration.ConfCi;
import itsm.isperp.module.entity.project.ProjProject;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

/**
 * 项目数据映射器
 * 
 * @author lizx
 * @date 2013-3-2
 * @version V1.0
 */
@Repository
public interface ProjProjectMapper extends CUDMapper<ProjProject> {

	/**
	 * 根据项目状态查询项目
	 * 
	 * @param string
	 * @return
	 */
	List<ProjProject> findByStatus(@Param("fields") String fields,
			@Param("status") String status);

	/**
	 * 更新项目状态
	 * 
	 * @param projectId
	 *            项目Id
	 * @param status
	 *            项目状态
	 */
	void updateProjectStage(@Param("projectId") String projectId,
			@Param("stage") String stage);

	/**
	 * 建立项目与客户资产之间的关联关系
	 * 
	 * @param projectId
	 *            项目Id
	 * @param status
	 *            项目状态
	 */
	void createRelationFromProjectToCI(String projectId);

	/**
	 * 查询以归档项目配置项
	 * 
	 * @param req
	 * @return
	 */
	DataResponse<ConfCi> findProjectCiByRequest(DataRequest req);

	/**
	 * 获取项目监控列表
	 * 
	 * @param userId
	 *            用户ID
	 * @return
	 */
	public DataResponse<ProjectMonitorDTO> getProjectMonitorLists(
			JqGridRequest request);

	List<Map<String, Object>> getCost(@Param("projectId") String projectId,
			@Param("projCostTemplateId") String projCostTemplateId);

	List<Map<String, Object>> getCostAccountingEntryAmount(
			@Param("projectId") String projectId);

}
